{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loading ocr model from /media/chenhao/study/code/work/github/chinese_ocr/chinese_ocr/models/densenet_base_model/1...............\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1-9eb3c6ccf4dd>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcv2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimage\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0munion_rbox\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madjust_box_to_origin\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimage\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_boxes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mletterbox_image\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/media/chenhao/study/code/work/github/chinese_ocr/chinese_ocr/model.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     17\u001b[0m \u001b[0;31m#      from crnn.crnn_keras import crnnOcr as crnnOcr ##keras版本OCR\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mglobal_obj\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mocr_predict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     21\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/media/chenhao/study/code/work/github/chinese_ocr/chinese_ocr/global_obj.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mocr_predict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDensenetOcr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/media/chenhao/study/code/work/github/chinese_ocr/chinese_ocr/predict_tf_tool.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m     41\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mDensenetOcr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     42\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 43\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloadmodel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     44\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     45\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mloadmodel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/media/chenhao/study/code/work/github/chinese_ocr/chinese_ocr/predict_tf_tool.py\u001b[0m in \u001b[0;36mloadmodel\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m     47\u001b[0m             \u001b[0msess\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     48\u001b[0m             \u001b[0;32mwith\u001b[0m \u001b[0msess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m                 \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_lamada\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     51\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mrun_lamada\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/media/chenhao/study/code/work/github/chinese_ocr/chinese_ocr/predict_tf_tool.py\u001b[0m in \u001b[0;36mrun_lamada\u001b[0;34m(self, sess)\u001b[0m\n\u001b[1;32m     52\u001b[0m         \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"loading ocr model from \"\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmodel_dir\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"...............\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     53\u001b[0m         metagraph_def = tf.saved_model.loader.load(\n\u001b[0;32m---> 54\u001b[0;31m             sess, [tf.saved_model.tag_constants.SERVING], model_dir)\n\u001b[0m\u001b[1;32m     55\u001b[0m         \u001b[0;31m# print(metagraph_def)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     56\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/saved_model/loader_impl.pyc\u001b[0m in \u001b[0;36mload\u001b[0;34m(sess, tags, export_dir, **saver_kwargs)\u001b[0m\n\u001b[1;32m    214\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    215\u001b[0m     \u001b[0;31m# Build a saver by importing the meta graph def to load.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 216\u001b[0;31m     \u001b[0msaver\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_saver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimport_meta_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmeta_graph_def_to_load\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msaver_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    217\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    218\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0msaver\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/training/saver.pyc\u001b[0m in \u001b[0;36mimport_meta_graph\u001b[0;34m(meta_graph_or_file, clear_devices, import_scope, **kwargs)\u001b[0m\n\u001b[1;32m   1907\u001b[0m                                       \u001b[0mclear_devices\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mclear_devices\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1908\u001b[0m                                       \u001b[0mimport_scope\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mimport_scope\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1909\u001b[0;31m                                       **kwargs)\n\u001b[0m\u001b[1;32m   1910\u001b[0m   \u001b[0;32mif\u001b[0m \u001b[0mmeta_graph_def\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHasField\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"saver_def\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1911\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mSaver\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msaver_def\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmeta_graph_def\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msaver_def\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mimport_scope\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/meta_graph.pyc\u001b[0m in \u001b[0;36mimport_scoped_meta_graph\u001b[0;34m(meta_graph_or_file, clear_devices, graph, import_scope, input_map, unbound_inputs_col_name, restore_collections_predicate)\u001b[0m\n\u001b[1;32m    735\u001b[0m     importer.import_graph_def(\n\u001b[1;32m    736\u001b[0m         \u001b[0minput_graph_def\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimport_scope\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_map\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_map\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 737\u001b[0;31m         producer_op_list=producer_op_list)\n\u001b[0m\u001b[1;32m    738\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    739\u001b[0m     \u001b[0;31m# Restores all the other collections.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/util/deprecation.pyc\u001b[0m in \u001b[0;36mnew_func\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    430\u001b[0m                 \u001b[0;34m'in a future version'\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdate\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'after %s'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mdate\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    431\u001b[0m                 instructions)\n\u001b[0;32m--> 432\u001b[0;31m       \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    433\u001b[0m     return tf_decorator.make_decorator(func, new_func, 'deprecated',\n\u001b[1;32m    434\u001b[0m                                        _add_deprecated_arg_notice_to_docstring(\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/importer.pyc\u001b[0m in \u001b[0;36mimport_graph_def\u001b[0;34m(graph_def, input_map, return_elements, name, op_dict, producer_op_list)\u001b[0m\n\u001b[1;32m    610\u001b[0m                       % (input_name,)))\n\u001b[1;32m    611\u001b[0m             \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 612\u001b[0;31m             \u001b[0mop\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_add_control_input\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_op\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    613\u001b[0m             \u001b[0;31m# pylint: enable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    614\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36m_add_control_input\u001b[0;34m(self, op)\u001b[0m\n\u001b[1;32m   1968\u001b[0m       \u001b[0mc_api\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mAddControlInput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_graph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_c_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_c_op\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_c_op\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1969\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1970\u001b[0;31m       \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_add_control_inputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mop\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1971\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1972\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m_remove_all_control_inputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36m_add_control_inputs\u001b[0;34m(self, ops)\u001b[0m\n\u001b[1;32m   1951\u001b[0m           \u001b[0m_assert_same_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1952\u001b[0m           \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_control_inputs_val\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1953\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_recompute_node_def\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1954\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1955\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m_add_control_input\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36m_recompute_node_def\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1989\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_control_inputs_val\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1990\u001b[0m       self._node_def_val.input.extend(\n\u001b[0;32m-> 1991\u001b[0;31m           [\"^%s\" % op.name for op in self._control_inputs_val])\n\u001b[0m\u001b[1;32m   1992\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1993\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m__str__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/home/chenhao/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36mname\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1786\u001b[0m       \u001b[0;32mreturn\u001b[0m \u001b[0mc_api\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_OperationName\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_c_op\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1787\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1788\u001b[0;31m       \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_node_def_val\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1789\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1790\u001b[0m   \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ],
     "output_type": "error"
    }
   ],
   "source": [
    "import time\n",
    "\n",
    "from PIL import Image\n",
    "import cv2\n",
    "\n",
    "import model\n",
    "from utils.image import union_rbox, adjust_box_to_origin\n",
    "from utils.image import get_boxes, letterbox_image\n",
    "from global_obj import ocr_predict\n",
    "from config.config import IMGSIZE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1 test on an image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "detectAngle = True\n",
    "path = \"test_images/shi.png\"\n",
    "\n",
    "img = cv2.imread(path)  ##GBR\n",
    "H, W = img.shape[:2]\n",
    "timeTake = time.time()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "text detect complete, it took 4.687s\n",
      "[{'cx': 78.5, 'cy': 13.5, 'text': '|1.《千年的愿望》', 'w': 155.05, 'h': 23.0, 'degree': 0.0}, {'cx': 32.75, 'cy': 70.25, 'text': '总希望', 'w': 65.57721759772025, 'h': 23.510864433221343, 'degree': 0.8052535989639354}, {'cx': 94.75, 'cy': 128.0, 'text': '二十岁的那个月夜', 'w': 161.14999999999998, 'h': 24.0104121494643, 'degree': -0.06638731531194668}, {'cx': 42.5, 'cy': 184.5, 'text': '能再回来', 'w': 86.05, 'h': 23.0, 'degree': 0.0}, {'cx': 85.0, 'cy': 243.0, 'text': '再重新活那么一次', 'w': 175.3, 'h': 24.0, 'degree': 0.0}, {'cx': 23.0, 'cy': 300.5, 'text': '然而', 'w': 44.55670631985086, 'h': 24.020824298928574, 'degree': -1.663921062330226}, {'cx': 32.5, 'cy': 357.5, 'text': '商时风', 'w': 65.05, 'h': 23.0, 'degree': 0.0}, {'cx': 32.75, 'cy': 415.0, 'text': '唐时雨', 'w': 65.57947154465685, 'h': 23.010864433221286, 'degree': -0.823569106588903}, {'cx': 42.75, 'cy': 473.5, 'text': '多少枝花', 'w': 86.57837423311449, 'h': 24.010412149464287, 'degree': -0.6524109307870573}, {'cx': 85.0, 'cy': 530.25, 'text': '多少个闲情的少女', 'w': 168.7008928477311, 'h': 23.5, 'degree': -0.36349282343671985}, {'cx': 115.0, 'cy': 588.0, 'text': '想她们在玉阶上转回以后', 'w': 238.3, 'h': 24.0, 'degree': 0.0}, {'cx': 102.25, 'cy': 645.0, 'text': '也只能枉然地剪下玫瑰', 'w': 211.5373435255704, 'h': 23.010864433221286, 'degree': 0.8437489635904356}, {'cx': 42.5, 'cy': 703.0, 'text': '插入瓶中', 'w': 86.05, 'h': 24.0, 'degree': 0.0}] 0\n",
      "[{'text': '|1.《千年的愿望》', 'cx': 78.5, 'cy': 13.5, 'w': 155.05, 'h': 23.0, 'degree': 0.0}, {'text': '总希望', 'cx': 32.75, 'cy': 70.25, 'w': 65.57721759772025, 'h': 23.510864433221347, 'degree': 0.8052535989639396}, {'text': '二十岁的那个月夜', 'cx': 94.75, 'cy': 128.0, 'w': 161.15, 'h': 24.010412149464294, 'degree': -0.06638731531194593}, {'text': '能再回来', 'cx': 42.5, 'cy': 184.5, 'w': 86.05000000000001, 'h': 23.0, 'degree': 3.2841453741284767e-15}, {'text': '再重新活那么一次', 'cx': 85.0, 'cy': 243.0, 'w': 175.3, 'h': 24.0, 'degree': 0.0}, {'text': '然而', 'cx': 23.0, 'cy': 300.5, 'w': 44.55670631985086, 'h': 24.02082429892859, 'degree': -1.6639210623302045}, {'text': '商时风', 'cx': 32.5, 'cy': 357.5, 'w': 65.05000000000001, 'h': 23.0, 'degree': 5.47318354533983e-15}, {'text': '唐时雨', 'cx': 32.75, 'cy': 415.0, 'w': 65.57947154465685, 'h': 23.010864433221325, 'degree': -0.8235691065889122}, {'text': '多少枝花', 'cx': 42.75, 'cy': 473.5, 'w': 86.57837423311449, 'h': 24.01041214946426, 'degree': -0.6524109307870586}, {'text': '多少个闲情的少女', 'cx': 85.0, 'cy': 530.25, 'w': 168.7008928477311, 'h': 23.499999999999922, 'degree': -0.3634928234367317}, {'text': '想她们在玉阶上转回以后', 'cx': 115.0, 'cy': 588.0, 'w': 238.3, 'h': 24.0, 'degree': 0.0}, {'text': '也只能枉然地剪下玫瑰', 'cx': 102.25, 'cy': 645.0, 'w': 211.53734352557044, 'h': 23.010864433221233, 'degree': 0.8437489635904399}, {'text': '插入瓶中', 'cx': 42.5, 'cy': 703.0, 'w': 86.05000000000001, 'h': 24.0, 'degree': 3.264804123567002e-15}] 0\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# 多行识别  multi line\n",
    "_, result, angle = model.model(img,\n",
    "                               detectAngle=detectAngle,  ##是否进行文字方向检测，通过web传参控制\n",
    "                               config=dict(MAX_HORIZONTAL_GAP=50,  ##字符之间的最大间隔，用于文本行的合并\n",
    "                                           MIN_V_OVERLAPS=0.6,\n",
    "                                           MIN_SIZE_SIM=0.6,\n",
    "                                           TEXT_PROPOSALS_MIN_SCORE=0.1,\n",
    "                                           TEXT_PROPOSALS_NMS_THRESH=0.3,\n",
    "                                           TEXT_LINE_NMS_THRESH=0.7,  ##文本行之间测iou值\n",
    "                                           ),\n",
    "                               leftAdjust=True,  ##对检测的文本行进行向左延伸\n",
    "                               rightAdjust=True,  ##对检测的文本行进行向右延伸\n",
    "                               alph=0.1,  ##对检测的文本行进行向右、左延伸的倍数\n",
    "                               )\n",
    "\n",
    "print(result, angle)\n",
    "result = union_rbox(result, 0.2)\n",
    "print(result, angle)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "result str: \n",
      "\n",
      "|1.《千年的愿望》\n",
      "总希望\n",
      "二十岁的那个月夜\n",
      "能再回来\n",
      "再重新活那么一次\n",
      "然而\n",
      "商时风\n",
      "唐时雨\n",
      "多少枝花\n",
      "多少个闲情的少女\n",
      "想她们在玉阶上转回以后\n",
      "也只能枉然地剪下玫瑰\n",
      "插入瓶中\n",
      "done\n"
     ]
    }
   ],
   "source": [
    "print(\"result str: \\n\", )\n",
    "for x in result:\n",
    "    print(x['text'])\n",
    "\n",
    "print(\"done\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'name': '0',\n",
       "  'text': '|1.《千年的愿望》',\n",
       "  'box': (0.9749999999999943,\n",
       "   2.0,\n",
       "   156.025,\n",
       "   2.0,\n",
       "   156.025,\n",
       "   25.0,\n",
       "   0.9749999999999943,\n",
       "   25.0)},\n",
       " {'name': '1',\n",
       "  'text': '总希望',\n",
       "  'box': (0.12983866295490998,\n",
       "   58.03492210793708,\n",
       "   65.7005798269483,\n",
       "   58.956535401750116,\n",
       "   65.37016133704509,\n",
       "   82.46507789206292,\n",
       "   -0.20057982694829946,\n",
       "   81.54346459824988)},\n",
       " {'name': '2',\n",
       "  'text': '二十岁的那个月夜',\n",
       "  'box': (14.161143931436612,\n",
       "   116.08816238117896,\n",
       "   175.31103575685773,\n",
       "   115.90144158673945,\n",
       "   175.33885606856336,\n",
       "   139.91183761882104,\n",
       "   14.188964243142266,\n",
       "   140.09855841326055)},\n",
       " {'name': '3',\n",
       "  'text': '能再回来',\n",
       "  'box': (-0.5250000000000057,\n",
       "   173.0,\n",
       "   85.525,\n",
       "   173.0,\n",
       "   85.525,\n",
       "   196.0,\n",
       "   -0.5250000000000057,\n",
       "   196.0)},\n",
       " {'name': '4',\n",
       "  'text': '再重新活那么一次',\n",
       "  'box': (-2.6500000000000057,\n",
       "   231.0,\n",
       "   172.65,\n",
       "   231.0,\n",
       "   172.65,\n",
       "   255.0,\n",
       "   -2.6500000000000057,\n",
       "   255.0)},\n",
       " {'name': '5',\n",
       "  'text': '然而',\n",
       "  'box': (0.3822965055365408,\n",
       "   289.1415446404498,\n",
       "   44.920215163543446,\n",
       "   287.8477596172726,\n",
       "   45.617703494463456,\n",
       "   311.8584553595502,\n",
       "   1.0797848364565503,\n",
       "   313.1522403827274)},\n",
       " {'name': '6',\n",
       "  'text': '商时风',\n",
       "  'box': (-0.025000000000005684,\n",
       "   346.0,\n",
       "   65.025,\n",
       "   346.0,\n",
       "   65.025,\n",
       "   369.0,\n",
       "   -0.025000000000005684,\n",
       "   369.0)},\n",
       " {'name': '7',\n",
       "  'text': '唐时雨',\n",
       "  'box': (-0.20172176165830535,\n",
       "   403.9670595282857,\n",
       "   65.37097515786503,\n",
       "   403.0244531540272,\n",
       "   65.7017217616583,\n",
       "   426.0329404717143,\n",
       "   0.12902484213496734,\n",
       "   426.9755468459728)},\n",
       " {'name': '8',\n",
       "  'text': '多少枝花',\n",
       "  'box': (-0.6730777178246825,\n",
       "   461.98848334836595,\n",
       "   85.89968381398039,\n",
       "   461.0026610487428,\n",
       "   86.17307771782468,\n",
       "   485.01151665163405,\n",
       "   -0.39968381398038844,\n",
       "   485.9973389512572)},\n",
       " {'name': '9',\n",
       "  'text': '多少个闲情的少女',\n",
       "  'box': (0.5767078248507858,\n",
       "   519.035364463577,\n",
       "   169.27420573068662,\n",
       "   517.9651084511373,\n",
       "   169.42329217514921,\n",
       "   541.464635536423,\n",
       "   0.7257942693133828,\n",
       "   542.5348915488627)},\n",
       " {'name': '10',\n",
       "  'text': '想她们在玉阶上转回以后',\n",
       "  'box': (-4.150000000000006,\n",
       "   576.0,\n",
       "   234.15,\n",
       "   576.0,\n",
       "   234.15,\n",
       "   600.0,\n",
       "   -4.150000000000006,\n",
       "   600.0)},\n",
       " {'name': '11',\n",
       "  'text': '也只能枉然地剪下玫瑰',\n",
       "  'box': (-3.337778282697627,\n",
       "   631.9383012483556,\n",
       "   208.1766285688713,\n",
       "   635.0533293516272,\n",
       "   207.83777828269763,\n",
       "   658.0616987516444,\n",
       "   -3.6766285688713083,\n",
       "   654.9466706483728)},\n",
       " {'name': '12',\n",
       "  'text': '插入瓶中',\n",
       "  'box': (-0.5250000000000057,\n",
       "   691.0,\n",
       "   85.525,\n",
       "   691.0,\n",
       "   85.525,\n",
       "   715.0,\n",
       "   -0.5250000000000057,\n",
       "   715.0)}]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res = [{'text': x['text'],\n",
    "            'name': str(i),\n",
    "            'box': {'cx': x['cx'],\n",
    "                    'cy': x['cy'],\n",
    "                    'w': x['w'],\n",
    "                    'h': x['h'],\n",
    "                    'angle': x['degree']\n",
    "    \n",
    "                    }\n",
    "            } for i, x in enumerate(result)]\n",
    "res = adjust_box_to_origin(img, angle, res)  ##修正box\n",
    "res"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## show box"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from utils import visualize\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13, 4, 2)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# resize the box to (m,n,2)\n",
    "boxes=[]\n",
    "for d in res:\n",
    "    x1 = d['box'][0]\n",
    "    y1 = d['box'][1]\n",
    "    x2 = d['box'][2]\n",
    "    y2 = d['box'][3]\n",
    "    x3 = d['box'][4]\n",
    "    y3 = d['box'][5]\n",
    "    x4 = d['box'][6]\n",
    "    y4 = d['box'][7]\n",
    "    xy = [[x1,y1],\n",
    "          [x2,y2],\n",
    "          [x3,y3],\n",
    "          [x4,y4]]\n",
    "    boxes.append(xy)\n",
    "\n",
    "d_boxes = np.array(boxes)\n",
    "d_boxes.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize.drow_polygon(img,boxes=d_boxes,title='result')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
